home *** CD-ROM | disk | FTP | other *** search
/ Attract File X AV / Attract File X AV.iso / pc / qt / setup.mst < prev    next >
Text File  |  1995-02-22  |  13KB  |  401 lines

  1. '**************************************************************************
  2. '*                QuickTime for Windows 2.0.1セットアップ
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST STARTQT20     = 210    ''QTWインストール開始メッセージ
  14. CONST NUKEOLD       = 220    ''QTW削除のウィンドウ
  15. CONST EXITFAILURE   = 400
  16. CONST EXITQUIT      = 600
  17. CONST EXITSUCCESS   = 700
  18. CONST OPTIONS       = 800
  19. CONST APPHELP       = 1000
  20. CONST BADPATH       = 6400
  21. CONST BILLBOARD     = 4545
  22. CONST CHOPTIONS        = 2500
  23. CONST OLDMESS       = 5010    '' インストール済みQTWを検索中メッセージ
  24. CONST OPTIONHELP    = 900    ''オプションのヘルプ
  25. CONST QTWHELP       = 910    ''QTW削除のヘルプ
  26. CONST FILES_REMOVED = 1
  27. CONST FILES_SKIPPED = 2
  28. CONST RENAME_OK     = 1
  29. CONST RENAME_NG     = 2
  30. CONST BADWINDOWS    = 101
  31.  
  32. CONST MB_OKCANCEL         = 1
  33. CONST MB_ABORTRETRYIGNORE = 2
  34. CONST MB_YESNOCANCEL      = 3
  35. CONST MB_YESNO            = 4
  36. CONST MB_RETRYCANCEL      = 5
  37. CONST MB_TYPEMASK         = 15
  38.  
  39. CONST MB_ICONQUESTION     = 32
  40. CONST MB_ICONEXCLAMATION  = 48
  41. CONST MB_ICONASTERISK     = 64
  42.  
  43. CONST MB_ICONINFORMATION  = MB_ICONASTERISK
  44. CONST MB_ICONSTOP         = MB_ICONHAND
  45.  
  46.  
  47.  
  48. ''Bitmap ID
  49. CONST LOGO = 1
  50.  
  51. GLOBAL WINSYSDIR$   '' Windows¥system dirctory.
  52. GLOBAL WINDIR$        '' Windows directory.
  53. GLOBAL CUIDLL$
  54. GLOBAL HELPPROC$
  55. GLOBAL GROUP$        ''グループ名
  56.  
  57.  
  58. DECLARE SUB InstallQTW
  59. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  60. DECLARE FUNCTION MakePath2 (szDir$, szFile$) AS STRING
  61. DECLARE FUNCTION BitmapCntrlInit LIB "mscuistf.dll" as INTEGER
  62.  
  63. DECLARE FUNCTION CheckForOld AS INTEGER    ''インストール済みQTW検索
  64. DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER ''QTWファイルの消去
  65. DECLARE SUB      RenameOldQT (szFilePath$)                 ''QTWファイルのリネーム
  66. DECLARE SUB      RenameOldQTr                ''QTWファイルのリネームを元に戻す
  67. DECLARE FUNCTION ShowWindow LIB "user" (ss%,ss%) AS INTEGER
  68.  
  69. ''Dialog list symbol names
  70. GLOBAL HARDDRIVES$
  71. GLOBAL QTDIRLIST$
  72.  
  73.  
  74.  
  75. INIT:
  76.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  77.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  78.  
  79.     SetBitmap CUIDLL$, LOGO
  80.     SetTitle "QuickTime for Windows セットアップ"
  81.     SetAbout "QuickTime for Windows セットアップ", "バージョン 2.0.1"
  82.     i % = ShowWindow(HwndFrame(),3)        ''フルスクリーン
  83.     HARDDRIVES$ = "HardDrives"    ''ハードディスクのリスト
  84.     QTDIRLIST$ = "Qtdirlist"    ''QTWを残すディレクトリ
  85.     GROUP$ = "QuickTime for Windows"
  86.  
  87.     GetLocalHardDrivesList HARDDRIVES$
  88.  
  89.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  90.     IF szInf$ = "" THEN
  91.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  92.     END IF
  93.     ReadInfFile szInf$
  94.  
  95. rem Make sure that we are running on Windows 3.1 or better
  96. rem ------------------------------------------------------
  97.     IF GetWindowsMajorVersion() < 3 THEN
  98.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  99.        UIPop 1
  100.        END
  101.     END IF
  102.  
  103.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  104.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  105.        UIPop 1
  106.        END
  107.     END IF
  108.  
  109.     WINDIR$ = GetWindowsDir()
  110.     WINSYSDIR$ = GetWindowsSysDir()
  111.  
  112.     W$ = MID$(GetWindowsDir, 1, 1)
  113.     IF (IsDriveValid(W$) = 0) OR (W$ = "") THEN
  114.         i% = DoMsgBox("Windows ドライブ ('"+W$+"') は、無効なドライブです。", "エラー", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  115.     END
  116.     END IF
  117.  
  118. WELCOME:
  119.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  120.     IF sz$ = "CONTINUE" THEN
  121.         UIPop 1
  122.     ELSEIF sz$ = "REACTIVATE" THEN
  123.         GOTO WELCOME
  124.     ELSE
  125.         GOSUB ASKQUIT
  126.         GOTO WELCOME
  127.     END IF
  128.  
  129. rem **
  130. rem * QTW2.0.1 をインストール
  131. rem ******************************************************************************
  132.  
  133. QTW20INST:
  134.     InstallQTW
  135.  
  136. rem *************************************************************************************
  137. rem QUIT
  138. rem *************************************************************************************
  139.  
  140. QUIT:
  141.     ON ERROR GOTO ERRQUIT
  142.  
  143.     IF ERR = 0 THEN
  144.         dlg% = EXITSUCCESS
  145.     ELSEIF ERR = STFQUIT THEN
  146.         dlg% = EXITQUIT
  147.     ELSE
  148.         dlg% = EXITFAILURE
  149.     END IF
  150. QUITL1:
  151.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  152.     IF sz$ = "REACTIVATE" THEN
  153.         GOTO QUITL1
  154.     END IF
  155.     UIPop 1
  156.  
  157.     END
  158.  
  159. ERRQUIT:
  160.     i% = DoMsgBox("セットアップでエラーが発生しました。", "エラー", MB_OK+MB_TASKMODAL+MB_ICONSTOP)
  161.     END
  162.  
  163.  
  164.  
  165. BADPATH:
  166.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  167.     IF sz$ = "REACTIVATE" THEN
  168.         GOTO BADPATH
  169.     END IF
  170.     UIPop 1
  171.     RETURN
  172.  
  173.  
  174. ASKQUIT:
  175. ASKQUIT1:
  176.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  177.  
  178.     IF sz$ = "EXIT" THEN
  179.         UIPopAll
  180.         ERROR STFQUIT
  181.     ELSEIF sz$ = "REACTIVATE" THEN
  182.         GOTO ASKQUIT1
  183.     ELSE
  184.         UIPop 1
  185.     END IF
  186.     RETURN
  187.  
  188.  
  189.  
  190. rem **
  191. rem ** QTW2.0.1.41のインストール
  192. rem *************************************************************************
  193. SUB InstallQTW STATIC
  194.  
  195.     i% = CheckForOld()    ''古いQTWの削除
  196.  
  197.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  198.     AddSectionFilesToCopyList "Files 1", SrcDir$, WINSYSDIR$
  199.     AddSectionFilesToCopyList "Files 2", SrcDir$, WINDIR$
  200.     CopyFilesInCopyList
  201.  
  202.     CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(WINDIR$,"player.exe") + " ^.mov", cmoOverwrite
  203.     CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(WINDIR$,"viewer.exe") + " ^.pic", cmoOverwrite
  204.     CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  205.     CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  206.     CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  207.     CreateIniKeyValue MakePath(WINDIR$,"SYSTEM.INI"), "MCI","QTWVideo",MakePath(WINSYSDIR$, "mciqtw.drv"), cmoOverwrite
  208.  
  209.     CreateIniKeyValue MakePath(WINDIR$,"SYSTEM.INI"), "Macx","DeviceBitmap","OFF", cmoOverwrite
  210. rem   i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  211.     CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  212.  
  213.     RUN MakePath(WINDIR$, "player.exe") + " install"
  214.     RUN MakePath(WINDIR$, "viewer.exe") + " install"
  215.  
  216.     rem Create a Program Manager group
  217.     rem ------------------------------
  218.            CreateProgmanGroup GROUP$, "", cmoNone
  219.            CreateProgmanItem GROUP$, "Movie Player", MakePath(WINDIR$,"PLAYER.EXE"), "", cmoOverwrite
  220.            CreateProgmanItem GROUP$, "Picture Viewer", MakePath(WINDIR$,"VIEWER.EXE"), "", cmoOverwrite
  221.  
  222.  
  223. END SUB
  224.  
  225.  
  226. rem *
  227. rem * QuickTimeの古いバージョンがあるかチェックする
  228. rem *************************************************************************
  229. FUNCTION CheckForOld STATIC AS INTEGER
  230.  
  231.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  232.  
  233.     GetLocalHardDrivesList "HardDrives"
  234.     NumDrives% = GetListLength("HardDrives")
  235.  
  236.     IF (NUMDRIVES% > 0) THEN
  237.          FOR i% = 1 TO NumDrives% STEP 1
  238.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":¥"
  239.             CheckForOld3:
  240.                 cursor% = ShowWaitCursor()
  241.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  242.                 RestoreCursor cursor%
  243.                 IF (OldFilePath$ <> "") THEN
  244.                     j% = RemoveOldQTFiles(OldFilePath$)
  245.                     GOTO CheckForOld3
  246.                 END IF
  247.          NEXT i%
  248.     END IF
  249.     UIPOP 1
  250.  
  251.     IF (NUMDRIVES% > 0) THEN
  252.     RenameOldQTr
  253.     END IF
  254.  
  255. END FUNCTION
  256.  
  257. rem *
  258. rem * QTIM.DLLをQTIM.DL_にリネームして見つからないようにする
  259. rem ***************************************************************************
  260. SUB RenameOldQT (szFilePath$) STATIC
  261.     SPLITPATH szFilePath$, drv$, dir$, filename$, ext$
  262.     RenameFile szFilePath$,filename$+".DL_"
  263.     AddListItem QTDIRLIST$, szFilePath$
  264. END SUB
  265.  
  266. rem *
  267. rem * リネームしておいたQTIM.DLLを元に戻す
  268. rem ***************************************************************************
  269. SUB RenameOldQTr STATIC
  270.  
  271.     n% = GetListLength(QTDIRLIST$)
  272.     IF (n% > 0) THEN
  273.         FOR i% = 1 TO n% STEP 1
  274.             rFilePath$ = GetListItem(QTDIRLIST$,i%)
  275.             SPLITPATH rFilePath$, drv$, dir$, filename$, ext$
  276.             RenameFile drv$+dir$+filename$+".DL_", filename$+ext$
  277.         NEXT i%
  278.     END IF
  279. END SUB
  280.  
  281.  
  282. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  283.  
  284.     RemoveOldQTFiles = FILES_SKIPPED
  285.  
  286.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  287.     DeadPath$ = drv$ + dir$
  288.  
  289.   rem check version resources if they exist
  290.       szVersion$ = GetVersionOfFile(FilePath$)
  291.  
  292.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  293.     SetSymbolValue "EditTextIn", DeadPath$+"   ** Version[" + szVersion$ + "] **"
  294. ROldQT1:
  295.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", QTWHELP, HELPPROC$)
  296.     UIPop 1
  297.  
  298.     IF sz$ = "BACK" THEN
  299.     RenameOldQT(FilePath$)
  300.         EXIT FUNCTION
  301.     END IF
  302.  
  303.     IF sz$ = "REACTIVATE" THEN
  304.         GOTO ROldQT1
  305.     END IF
  306.  
  307.     IF sz$ <> "CONTINUE" THEN
  308.     RenameOldQT(FilePath$)
  309.         EXIT FUNCTION
  310.     END IF
  311.  
  312.     rem all versions
  313.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  314.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  315.     rem version 1.0.0
  316.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  317.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  318.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  319.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  320.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  321.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  322.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  323.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  324.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  325.     rem version 1.1.x and later
  326.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  327.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  328.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  329.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  330.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  331.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  332.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  333.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  334.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  335.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  336.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  337.     rem version 1.9 and later
  338.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  339.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  340.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  341.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  342.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  343.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  344.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  345.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  346.  
  347.      rem 追加
  348.         RemoveFile MakePath(DeadPath$, "mciqtenu.dll"), cmoForce
  349.         RemoveFile MakePath(DeadPath$, "qthndlr.dll"), cmoForce
  350.         RemoveFile MakePath(DeadPath$, "qtnotify.exe"), cmoForce
  351.         RemoveFile MakePath(DeadPath$, "qtold.qtc"), cmoForce
  352.         RemoveFile MakePath(DeadPath$, "qtole.dll"), cmoForce
  353.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  354.  
  355.     RemoveOldQTFiles = FILES_REMOVED
  356.  
  357.  
  358. END FUNCTION
  359.  
  360.  
  361. '**
  362. '** Purpose:
  363. '**     Appends a file name to the end of a directory path,
  364. '**     inserting a backslash character as needed.
  365. '** Arguments:
  366. '**     szDir$  - full directory path (with optional ending "¥")
  367. '**     szFile$ - filename to append to directory
  368. '** Returns:
  369. '**     Resulting fully qualified path name.
  370. '*************************************************************************
  371. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  372.     IF szDir$ = "" THEN
  373.         MakePath = szFile$
  374.     ELSEIF szFile$ = "" THEN
  375.         MakePath = szDir$
  376.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "¥" THEN
  377.         MakePath = MakePath2(szDir$, szFile$)
  378.     ELSE
  379.         MakePath = szDir$ + "¥" + szFile$
  380.     END IF
  381. END FUNCTION
  382.  
  383.  
  384. '**
  385. '** Purpose:
  386. '**     If ending "¥" is a tailbyte of a DBCS character, append a "¥" 
  387. '**     to the end of the file name.
  388. '** Arguments:
  389. '**     szDir$  - full directory path (with optional ending "¥")
  390. '**     szFile$ - filename to append to directory
  391. '** Returns:
  392. '**     Resulting fully qualified path name.
  393. '*************************************************************************
  394. FUNCTION MakePath2 (szDir$, szFile$) STATIC AS STRING
  395.     IF IsDBCSChar(szDir$, LEN(szDir$)) = 2 THEN
  396.         MakePath2 = szDir$ + "¥" + szFile$
  397.     ELSE
  398.         MakePath2 = szDir$ + szFile$
  399.     END IF
  400. END FUNCTION
  401.